Schere-Stein-Papier Multiplayer

🧠 Projektidee

Dieses Projekt ist ein minimalistisches Echtzeit-Multiplayer-Spiel, das das klassische Spielprinzip von Schere, Stein, Papier verwendet. Der Clou: Die Netzwerkverbindung erfolgt ohne externe Frameworks wie Photon oder Mirror – stattdessen wird die Kommunikation über native .NET-Sockets und eigene Nachrichtenklassen geregelt. Ziel war es, die Low-Level-Netzwerkarchitektur selbst zu implementieren und ein besseres Verständnis für Datenserialisierung, Zustandsabgleich und Verbindungssteuerung zu bekommen.

🧱 Architekturüberblick

Das Projekt besteht aus einem Unity-Frontend mit einer einfachen Spielszene und einem eingebauten Netzwerkprotokoll. Zentral ist die NetworkMessage-Klasse, die als Datencontainer für die Kommunikation zwischen Server und Client dient.

namespace RockPaperScissorsMultiplayer
{
    public class NetworkMessage
    {
        public string Text { get; set; }
        public string PlayerName { get; set; }
        public bool EndConnection { get; set; }
    }
}

Diese Klasse ermöglicht einen klar strukturierten Nachrichtenaustausch. Jeder Client sendet seinen Spielzug, den Spielernamen und kann das Spiel über das EndConnection-Flag beenden.

🔌 Netzwerkkommunikation (Ausblick)

Auch wenn die NetworkMessage-Klasse simpel erscheint, bietet sie eine gute Basis für weitere Netzwerkfeatures: * Erweiterung durch z. B. MoveType (für Stein/Schere/Papier) * Nutzung von JSON-Serialisierung zur einfachen Übertragung * Zustandsüberwachung pro Verbindung (z. B. durch Heartbeats) * Trennung von System- und Spielnachrichten

✨ Warum dieses Projekt?

Für mein Portfolio zeigt dieses Projekt: * Netzwerkverständnis auf niedriger Ebene (z. B. TCP-Verbindungen, Serialisierung) * Fähigkeit zur eigenständigen Erweiterung (GUI, Spielregeln, Fehlerbehandlung) * Unity-Integration ohne Abhängigkeiten – ideal für Prototyping und Verständnis

🛠️ Nächste Schritte

* Ausbau zu Matchmaking & Lobby-System * GUI zur Auswahl von Schere/Stein/Papier * Spielstand-Logik & automatische Wiederverbindung * ggf. das ganze nun nochmal mit Photon, Mirror oder dem Unity eigenen Multiplayer

An unhandled error has occurred. Reload 🗙